在 Objective-C 中,為了保存基本的資料類型,像是 int, float, bool,內建了許多與NSNumber有關的方法。
+ (NSNumber *)numberWithBool:(BOOL)value
建立並返回一個包含了給定值的NSNumber實體,將其視為BOOL值
+ (NSNumber *)numberWithChar:(char)value         //2
+ (NSNumber *)numberWithDouble:(double)value     //3
+ (NSNumber *)numberWithFloat:(float)value       //4
+ (NSNumber *)numberWithInt:(int)value           //5
+ (NSNumber *)numberWithInteger:(NSInteger)value //6
NSNumber實體,將其視為char值NSNumber實體,將其視為double值NSNumber實體,將其視為float值NSNumber實體,將其視為int值NSNumber實體,將其視為NSInteger值- (BOOL)boolValue         //7
- (char)charValue         //8
- (double)doubleValue     //9
- (float)floatValue       //10
- (NSInteger)integerValue //11
- (int)intValue           //12
- (NSString *)stringValue //13
BOOL值char值double值float值NSInteger值int值NSString值ex.
#import <Foundation/Foundation.h>
@interface SampleClass : NSObject
- (NSNumber *)addA: (NSNumber *)a withB: (NSNumber *)b;
@end
@implementation SampleClass
- (NSNumber *)addA:(NSNumber *)a withB:(NSNumber *)b {
    float number1 = [a floatValue]; // number1 = 類型為 float 的 a 值
    float number2 = [b floatValue];
    float value = number1 + number2;
    NSNumber *result = [NSNumber numberWithFloat:value]; //number 本身不能算術運算,因此先轉成 float ,再變為 NSNumber
    return result;
}
@end
int main () {
    
//    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; //這與記憶體管理有關,但現在以是自動引用計數模式,已不可用了
    SampleClass *sampleClass = [[SampleClass alloc] init];
    NSNumber *a = [NSNumber numberWithFloat: 11.0];
    NSNumber *b = [NSNumber numberWithFloat: 10.0];
    NSNumber *result = [sampleClass addA:a withB:b];
    NSString *resultString = [result stringValue]; //NSNumber 轉為 NSString
    NSLog(@"結果為 %@",resultString);
    
    return 0;
}
結果:
2021-09-28 01:00:31.403729+0800 TestOC[15699:212863] 結果為 21